﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ch01
{
    public partial class Form3 : Form
    {
        //定义变量保存鼠标起始的位置
        Point p;
        //定义变量保存窗体的起始的位置
        Point wp;

        //定义变量保存鼠标是否按下了左键，默认为false，代表没有按下左键
        bool flag = false;

        public Form3()
        {
            InitializeComponent();
        }
        //窗体单击事件
        private void Form3_Click(object sender, EventArgs e)
        {
            //获取鼠标的位置并显示到窗体的标签
            label1.Text = "鼠标的位置：" + MousePosition.X + "," + MousePosition.Y;
        }
        //鼠标移动事件
        private void Form3_MouseMove(object sender, MouseEventArgs e)
        {
            //获取鼠标的位置并显示到窗体的标签
            //label1.Text = "鼠标的位置：" + MousePosition.X + "," + MousePosition.Y;
            
            //移动窗体的位置（鼠标按下左键才移动）

            //判断鼠标是否按下了左键
            if (flag)
            {
                //计算鼠标移动了多少距离(移动后的位置减去起始位置)
                int x = MousePosition.X - p.X;
                int y = MousePosition.Y - p.Y;

                //鼠标移动了多少，窗体就移动多少
                this.Location = new Point(wp.X + x, wp.Y + y);
            }
            
        }
        //鼠标按下事件
        private void Form3_MouseDown(object sender, MouseEventArgs e)
        {
            //保存鼠标和窗体的当前位置
            p = MousePosition;
            wp = Location;
            //改变鼠标的状态为按下的状态
            flag = true;
        }
        //鼠标松开事件
        private void Form3_MouseUp(object sender, MouseEventArgs e)
        {
            //改变鼠标按下的状态为松开的状态
            flag = false;
        }
    }
}
